Ruby 日記 39日目: ブロック引数を受け取るメソッド
次のプログラムを実行するとどうなりますか
code:gold/ex39/main.rb
val = 100
def method(val)
yield(15 + val)
end
_proc = Proc.new{|arg| val + arg }
p method(val, &_proc)
選択肢:
130と表示される
200と表示される
115と表示される
215と表示される
解説:
類似問題は
かな
正解は「215と表示される」だね
code:sh
# ruby gold/ex39/main.rb
215
/icons/hr.icon
トップレベルの val = 100 が地味にわかりにくくしている感があるな
書き換えると、こうだよね。
code:gold/ex39/sample01.rb
def method(val)
yield(15 + val)
end
_proc = Proc.new{|arg| 100 + arg }
p method(100, &_proc)
さらに書き換えると、こう。
code:gold/ex39/sample02.rb
def method(val)
yield(15 + val)
end
p method(100){|arg| 100 + arg }
yield(15 + 100) → yield(115) → 100 + 115 → 215 という感じね